<?php

/************** 3.5 计算两个日期之差 *********************/

// 问题
// 希望得出两个日期相差多长时间。

// 解决方案
// 分别为这两个日期创建一个 DateTime 对象，然后使用 DateTime::diff()

$first = new DateTime("2020-11-30");
$second = new DateTime("2019-05-26");

$diff = $first->diff($second);
//var_dump($diff);


/************** 3.6 查找一周，月或年中某一天 *********************/
// 问题
// 想知道一年中某一天或一周，一周中某一天，或者一月中某一天

// 解决方案
// 在 date()或 DateTime::format() 使用适当的参数

# 查找一周，月，和年中某一天
//print "today is Day " . date('d') . ' of the month and ' . date('z') .
' of the year';
//print "\n";

$birthday = new DateTime('January 17 ,1706', new DateTimeZone('America/New_York'));

print "Benjamin Franklin was born on a " . $birthday->format('l') . "," . 'day ' .
    $birthday->format('N') . ' of the week';

// 注意 mysql 的 一个星期的第一天 和 PHP 一个星期的第一天

/************ 3.9 日期加减 *******************/

// 问题：可以对日期加减一个时间间隔

// 解决方案
// 可以利用 DateTime::add() /DateTime::sub()

$birthday = new DateTime('March 10,1975');

// $birthday 前40周是什么时候
$human_gestation = new DateInterval('P40W');
$birthday->sub($human_gestation);
echo PHP_EOL;
$res = $birthday->format(DateTime::RFC850);
//var_dump($res);

/*************** 3.12 生成时间范围  ********************/

// 从8月1日
$start = new DateTime('August 1,2014');
// 结束时间 不包含在内 所以8.31 结束
$end = new DateTime('September 1,2014');
// 前进1天
$interval = new DateInterval('P1D');

$range1 = new DatePeriod($start, $interval, $end);
